home *** CD-ROM | disk | FTP | other *** search
/ Apple Developer Connection 1998 Fall: Game Toolkit / Disc.iso / SDKs / PCI Driver Development Kit / • Tools / Utility / PCISlots / Includes / PCISlots.h < prev   
Encoding:
Text File  |  1996-08-20  |  11.5 KB  |  312 lines  |  [TEXT/MPS ]

  1. // Copyright © 1995 by Apple Computer, Inc.  All rights reserved.
  2. // PCISlots.h
  3.  
  4. /*
  5. FILE
  6.     PCISlots.h
  7.  
  8. NAME
  9.     PCI Slot Peek interface file
  10.  
  11. DESCRIPTION
  12.     This header file contains definitions for the PCI Slot Peek application.
  13.  
  14. MODIFICATION HISTORY
  15.     Created by Terry Teague
  16.  
  17.     24 Apr 95    -    TRT    -    Initial version
  18.     17 Jul 95    -    TRT    -    Tidy-up source for PPCC v1.0.5, Universal Headers v2.0 final,
  19.                                     CodeWarrior 6.1. Add support for finding slot # given driver refNum.
  20.  
  21. =============================================================================================
  22. */
  23.  
  24. #ifndef    __PCISLOTS__
  25. #define    __PCISLOTS__
  26.  
  27. #ifdef __cplusplus
  28. extern "C" {
  29. #endif
  30.  
  31. #if GENERATINGPOWERPC || defined(powerc) || defined (__powerc)
  32. #pragma options align=mac68k
  33. #endif
  34.  
  35. #ifdef __CFM68K__
  36. #pragma lib_export on
  37. #endif
  38.  
  39. //=============================================================================================
  40. //    Constants
  41. //=============================================================================================
  42.  
  43. #ifndef    TRUE
  44. #define    TRUE                1
  45. #define    FALSE                0
  46. #endif
  47.  
  48. // Printable characters from the ISO-Invariant character set.
  49.  
  50. #define    IS_ASCII_PRINT(c)                ((c) >= ' ' && (c) <= '~')
  51.  
  52. #define    kOneLineFormatLength            (80)
  53.  
  54. // no native PPC code available Alert
  55. #define    kNotPPCResourceID                27309
  56. #define    kMac68KMsgID                 1
  57. #define    kPowerMacMsgID               2
  58.  
  59. // STR# resources
  60. #define    kSlotPropertySTRID            10000
  61. #define    kSlotNamesPropertyName        1
  62. #define    kSlotPropertyName                2
  63. #define    kSlotPropertyValue            3
  64. #define    kSlotDriverRefNumItem        4
  65.  
  66. #define    kPropertyNameSTRID            10001
  67. #define    kDisplayPropertyValueSTRID    10002
  68.  
  69. #define    kMiscPCISTRID                    10005
  70. #define    kPCISlotsTitle                    1
  71. #define    kNoPCISlots                        2
  72. #define    kNoNameRegistryLib            3
  73. #define    kNo68KNameRegistry            4
  74. #define    kNoCardsInPCISlots            5
  75.  
  76. // PEF container in resource
  77. #define    kPEFResType                        'XCOF'
  78. #define    kPEFresourceID                    10000
  79.  
  80. // error codes returned by PPC native glue code setup function
  81. enum {
  82.     glueNoErr                                =    0,
  83.     glueNotPPCErr                            =    1,
  84.     glueNoCFMorMMErr                        =    2,
  85.     glueCFMPrepareErr                        =    3,
  86.     glueFindSymbolErr                        =    4,
  87.     glueNoGlueErr                            =    5
  88. };
  89.  
  90.  
  91. //=============================================================================================
  92. //    Types
  93. //=============================================================================================
  94.  
  95. typedef OSStatus (*RegistryEntryIterateCreateProcPtr) (RegEntryIter *cookie);
  96. typedef OSStatus (*RegistryEntryIterateDisposeProcPtr) (RegEntryIter *cookie);
  97. typedef OSStatus (*RegistryEntryIterateProcPtr) (RegEntryIter *cookie, RegEntryIterationOp relationship, RegEntryID *foundEntry, Boolean *done);
  98. typedef OSStatus (*RegistryEntryIDDisposeProcPtr) (RegEntryID *id);
  99. typedef OSStatus (*RegistryPropertyGetSizeProcPtr) (const RegEntryID *entryID, const RegPropertyName *propertyName, RegPropertyValueSize *propertySize);
  100. typedef OSStatus (*RegistryPropertyGetProcPtr) (const RegEntryID *entryID, const RegPropertyName *propertyName, void *propertyValue, RegPropertyValueSize *propertySize);
  101. typedef OSStatus (*RegistryEntryToPathSizeProcPtr) (const RegEntryID *entryID, RegPathNameSize *pathSize);
  102. typedef OSStatus (*RegistryCStrEntryToPathProcPtr) (const RegEntryID *entryID, RegCStrPathName *pathName, RegPathNameSize pathSize);
  103.  
  104. #if GENERATINGCFM || USESROUTINEDESCRIPTORS
  105.  
  106. typedef UniversalProcPtr RegistryEntryIterateCreateUPP;
  107. typedef UniversalProcPtr RegistryEntryIterateDisposeUPP;
  108. typedef UniversalProcPtr RegistryEntryIterateUPP;
  109. typedef UniversalProcPtr RegistryEntryIDDisposeUPP;
  110. typedef UniversalProcPtr RegistryPropertyGetSizeUPP;
  111. typedef UniversalProcPtr RegistryPropertyGetUPP;
  112. typedef UniversalProcPtr RegistryEntryToPathSizeUPP;
  113. typedef UniversalProcPtr RegistryCStrEntryToPathUPP;
  114.  
  115. enum {
  116.     uppRegistryEntryIterateCreateProcInfo = kCStackBased
  117.         | RESULT_SIZE(SIZE_CODE(sizeof(OSStatus)))
  118.         | STACK_ROUTINE_PARAMETER (1, SIZE_CODE(sizeof(RegEntryIter *)))
  119. };
  120.  
  121. enum {
  122.     uppRegistryEntryIterateDisposeProcInfo = kCStackBased
  123.         | RESULT_SIZE(SIZE_CODE(sizeof(OSStatus)))
  124.         | STACK_ROUTINE_PARAMETER (1, SIZE_CODE(sizeof(RegEntryIter *)))
  125. };
  126.  
  127. enum {
  128.     uppRegistryEntryIterateProcInfo = kCStackBased
  129.         | RESULT_SIZE(SIZE_CODE(sizeof(OSStatus)))
  130.         | STACK_ROUTINE_PARAMETER (1, SIZE_CODE(sizeof(RegEntryIter *)))
  131.         | STACK_ROUTINE_PARAMETER (2, SIZE_CODE(sizeof(RegEntryIterationOp)))
  132.         | STACK_ROUTINE_PARAMETER (3, SIZE_CODE(sizeof(RegEntryID *)))
  133.         | STACK_ROUTINE_PARAMETER (4, SIZE_CODE(sizeof(Boolean *)))
  134. };
  135.  
  136. enum {
  137.     uppRegistryEntryIDDisposeProcInfo = kCStackBased
  138.         | RESULT_SIZE(SIZE_CODE(sizeof(OSStatus)))
  139.         | STACK_ROUTINE_PARAMETER (1, SIZE_CODE(sizeof(RegEntryID *)))
  140. };
  141.  
  142. enum {
  143.     uppRegistryPropertyGetSizeProcInfo = kCStackBased
  144.         | RESULT_SIZE(SIZE_CODE(sizeof(OSStatus)))
  145.         | STACK_ROUTINE_PARAMETER (1, SIZE_CODE(sizeof(RegEntryID *)))
  146.         | STACK_ROUTINE_PARAMETER (2, SIZE_CODE(sizeof(RegPropertyName *)))
  147.         | STACK_ROUTINE_PARAMETER (3, SIZE_CODE(sizeof(RegPropertyValueSize *)))
  148. };
  149.  
  150. enum {
  151.     uppRegistryPropertyGetProcInfo = kCStackBased
  152.         | RESULT_SIZE(SIZE_CODE(sizeof(OSStatus)))
  153.         | STACK_ROUTINE_PARAMETER (1, SIZE_CODE(sizeof(RegEntryID *)))
  154.         | STACK_ROUTINE_PARAMETER (2, SIZE_CODE(sizeof(RegPropertyName *)))
  155.         | STACK_ROUTINE_PARAMETER (3, SIZE_CODE(sizeof(void *)))
  156.         | STACK_ROUTINE_PARAMETER (4, SIZE_CODE(sizeof(RegPropertyValueSize *)))
  157. };
  158.  
  159. enum {
  160.     uppRegistryEntryToPathSizeProcInfo = kCStackBased
  161.         | RESULT_SIZE(SIZE_CODE(sizeof(OSStatus)))
  162.         | STACK_ROUTINE_PARAMETER (1, SIZE_CODE(sizeof(RegEntryID *)))
  163.         | STACK_ROUTINE_PARAMETER (2, SIZE_CODE(sizeof(RegPathNameSize *)))
  164. };
  165.  
  166. enum {
  167.     uppRegistryCStrEntryToPathProcInfo = kCStackBased
  168.         | RESULT_SIZE(SIZE_CODE(sizeof(OSStatus)))
  169.         | STACK_ROUTINE_PARAMETER (1, SIZE_CODE(sizeof(RegEntryID *)))
  170.         | STACK_ROUTINE_PARAMETER (2, SIZE_CODE(sizeof(RegCStrPathName *)))
  171.         | STACK_ROUTINE_PARAMETER (3, SIZE_CODE(sizeof(RegPathNameSize)))
  172. };
  173.  
  174. //#define    CallEnumerateNameRegistry    CallUniversalProc((UniversalProctPtr)(myEnumerateNameRegistryUPP), uppEnumerateNameRegistryProcInfo)
  175.  
  176. #else
  177.  
  178. typedef RegistryEntryIterateCreateProcPtr RegistryEntryIterateCreateUPP;
  179. typedef RegistryEntryIterateDisposeProcPtr RegistryEntryIterateDisposeUPP;
  180. typedef RegistryEntryIterateProcPtr RegistryEntryIterateUPP;
  181. typedef RegistryEntryIDDisposeProcPtr RegistryEntryIDDisposeUPP;
  182. typedef RegistryPropertyGetSizeProcPtr RegistryPropertyGetSizeUPP;
  183. typedef RegistryPropertyGetProcPtr RegistryPropertyGetUPP;
  184. typedef RegistryEntryToPathSizeProcPtr RegistryEntryToPathSizeUPP;
  185. typedef RegistryCStrEntryToPathProcPtr RegistryCStrEntryToPathUPP;
  186.  
  187. //#define    CallEnumerateNameRegistry    (*myEnumerateNameRegistryUPP)()
  188.  
  189. #endif
  190.  
  191. //=============================================================================================
  192. //    Global variables
  193. //=============================================================================================
  194.  
  195. #if GENERATINGPOWERPC || defined(powerc) || defined (__powerc)
  196.  
  197. // PPC native code only
  198.  
  199. #else
  200.  
  201. // 68K only
  202.  
  203. extern RegistryEntryIterateCreateUPP    myRegistryEntryIterateCreateUPP;
  204. extern RegistryEntryIterateDisposeUPP    myRegistryEntryIterateDisposeUPP;
  205. extern RegistryEntryIterateUPP            myRegistryEntryIterateUPP;
  206. extern RegistryEntryIDDisposeUPP            myRegistryEntryIDDisposeUPP;
  207. extern RegistryPropertyGetSizeUPP        myRegistryPropertyGetSizeUPP;
  208. extern RegistryPropertyGetUPP                myRegistryPropertyGetUPP;
  209. extern RegistryEntryToPathSizeUPP        myRegistryEntryToPathSizeUPP;
  210. extern RegistryCStrEntryToPathUPP        myRegistryCStrEntryToPathUPP;
  211.  
  212. #endif
  213.  
  214. //=============================================================================================
  215. //    Macros
  216. //=============================================================================================
  217.  
  218. // This is the magic that makes it all work
  219. // Native PPC code just makes calls to native PPC library functions
  220. // 68K calls the 68K->PPC glue code
  221.  
  222. #if GENERATINGPOWERPC || defined(powerc) || defined (__powerc)
  223.  
  224. // PPC native code only
  225.  
  226. #define myRegistryEntryIterateCreate(a)        RegistryEntryIterateCreate(a)
  227. #define myRegistryEntryIterateDispose(a)        RegistryEntryIterateDispose(a)
  228. #define myRegistryEntryIterate(a, b, c, d)    RegistryEntryIterate(a, b, c, d)
  229. #define myRegistryEntryIDDispose(a)                RegistryEntryIDDispose(a)
  230. #define myRegistryPropertyGetSize(a, b, c)    RegistryPropertyGetSize(a, b, c)
  231. #define myRegistryPropertyGet(a, b, c, d)        RegistryPropertyGet(a, b, c, d)
  232. #define myRegistryEntryToPathSize(a, b)        RegistryEntryToPathSize(a, b)
  233. #define myRegistryCStrEntryToPath(a, b, c)    RegistryCStrEntryToPath(a, b, c)
  234.  
  235. #else
  236.  
  237. // 68K code only
  238.  
  239. // Jump to the routine descriptor. Here is the magic that calls the PPC code
  240.  
  241. #define myRegistryEntryIterateCreate(a)        (*(RegistryEntryIterateCreateUPP)myRegistryEntryIterateCreateUPP)(a)
  242. #define myRegistryEntryIterateDispose(a)        (*(RegistryEntryIterateDisposeUPP)myRegistryEntryIterateDisposeUPP)(a)
  243. #define myRegistryEntryIterate(a, b, c, d)    (*(RegistryEntryIterateUPP)myRegistryEntryIterateUPP)(a, b, c, d)
  244. #define myRegistryEntryIDDispose(a)                (*(RegistryEntryIDDisposeUPP)myRegistryEntryIDDisposeUPP)(a)
  245. #define myRegistryPropertyGetSize(a, b, c)    (*(RegistryPropertyGetSizeUPP)myRegistryPropertyGetSizeUPP)(a, b, c)
  246. #define myRegistryPropertyGet(a, b, c, d)        (*(RegistryPropertyGetUPP)myRegistryPropertyGetUPP)(a, b, c, d)
  247. #define myRegistryEntryToPathSize(a, b)        (*(RegistryEntryToPathSizeUPP)myRegistryEntryToPathSizeUPP)(a, b)
  248. #define myRegistryCStrEntryToPath(a, b, c)    (*(RegistryCStrEntryToPathUPP)myRegistryCStrEntryToPathUPP)(a, b, c)
  249.  
  250. #endif
  251.  
  252. //=============================================================================================
  253. //    Functions
  254. //=============================================================================================
  255.  
  256. #if 0
  257. extern OSStatus myRegistryEntryIterateCreate(RegEntryIter *cookie);
  258. extern OSStatus myRegistryEntryIterateDispose(RegEntryIter *cookie);
  259. extern OSStatus myRegistryEntryIterate(RegEntryIter *cookie, RegEntryIterationOp relationship, RegEntryID *foundEntry, Boolean *done);
  260. extern OSStatus myRegistryEntryIDDispose(RegEntryID *id);
  261. extern OSStatus myRegistryPropertyGetSize(const RegEntryID *entryID, const RegPropertyName *propertyName, RegPropertyValueSize *propertySize);
  262. extern OSStatus myRegistryPropertyGet(const RegEntryID *entryID, const RegPropertyName *propertyName, void *propertyValue, RegPropertyValueSize *propertySize);
  263. extern OSStatus myRegistryEntryToPathSize(const RegEntryID *entryID, RegPathNameSize *pathSize);
  264. extern OSStatus myRegistryCStrEntryToPath(const RegEntryID *entryID, RegCStrPathName *pathName, RegPathNameSize pathSize);
  265. #endif
  266.  
  267. // in PCISlotsUtils.cp
  268.  
  269. extern Boolean FormatStringProperty(RegPropertyValueSize propertySize, const void *propertyValue, char *formatStr, char *result);
  270.  
  271. extern Boolean FormatSmallProperty(RegPropertyValueSize propertySize, const void *propertyValue, char *formatStr, char *result);
  272.  
  273. extern void EnumeratePropertiesForThisName(RegEntryID *entryID, const RegCStrPathName *pathName);
  274.  
  275. extern OSErr GetSlotForThisName(RegEntryID *entryID, const RegCStrPathName *pathName);
  276.  
  277. extern short EnumerateNameRegistry(void);
  278.  
  279. extern short GetSlotForThisRefNum(short refNum);
  280.  
  281. //extern void InitNativeNameRegistry(void);
  282.  
  283. // in PCISlots.cp
  284.  
  285. #if GENERATINGPOWERPC || defined(powerc) || defined (__powerc)
  286.  
  287. #else
  288.  
  289. // I suppose I could have implemented these as macros, and for native PPC code
  290. // they would be dummies that did nothing
  291.  
  292. extern OSErr SetupPPCNativeCode(CFragConnectionID *connID, Handle *PEFHandle);
  293.  
  294. extern void TearDownPPCNativeCode(CFragConnectionID connID, Handle PEFHandle);
  295.  
  296. #endif
  297.  
  298. #ifdef __CFM68K__
  299. #pragma lib_export off
  300. #endif
  301.  
  302. #if GENERATINGPOWERPC || defined(powerc) || defined (__powerc)
  303. #pragma options align=reset
  304. #endif
  305.  
  306. #ifdef __cplusplus
  307. }
  308. #endif
  309.  
  310. #endif
  311.  
  312.